// 简单的 API 工具函数
const API_BASE_URL = 'https://hongjiang.hj-hr.com/api/app/appToHr'

// 通用请求函数
const request = (url, method = 'GET', data = {}) => {
  const fullUrl = API_BASE_URL + url
  console.log(`API 请求: ${method} ${fullUrl}`, data)
  
  return new Promise((resolve, reject) => {
    uni.request({
      url: fullUrl,
      method: method,
      data: data,
      header: {
        'Content-Type': 'application/json'
      },
      success: (res) => {
        console.log('API 响应:', res.data)
        console.log('API 响应状态码:', res.statusCode)
        // 全局 code 檢查與提示
        try {
          const payload = res.data
          if (payload && typeof payload === 'object' && 'code' in payload && payload.code !== 200) {
            const msg = payload.msg || '请求失败'
            uni.showToast({ title: String(msg), icon: 'none' })
          }
        } catch (e) {
          // 忽略提示階段錯誤，僅記錄
          console.warn('全局消息提示處理異常:', e)
        }
        resolve(res.data)
      },
      fail: (err) => {
        console.error('API 错误:', err)
        // 網絡層錯誤統一提示
        try {
          const msg = (err && (err.errMsg || err.message)) || '网络错误'
          uni.showToast({ title: String(msg), icon: 'none' })
        } catch (e) {}
        reject(err)
      }
    })
  })
}

// 招聘相关 API
export const jobApi = {
  // 获取招聘信息列表
  getListToApp(data) {
    return request('/getListToApp', 'POST', data)
  },

  // 根据招聘id获取招聘信息
  getHireRecruitUseById(hireRecruitUseId, openId) {
    return request('/getHireRecruitUseById', 'POST', { 
      hireRecruitUseId: hireRecruitUseId,
      openId: openId
    })
  },
  // 获取岗位数量统计
    getDateCount(data) {
      return request('/getDateCount', 'GET', data)
    },

  // 根据地区获取招聘ids
  getAreaCount(data) {
    return request('/getAreaCount', 'POST', data)
  },

  // 获取所有岗位
  getAllPosition() {
    return request('/allPosition', 'GET')
  },
  // 获取热门城市
  getHotArea() {
    return request('/getHotArea', 'GET')
  }
}

// 报名相关 API
export const applicationApi = {
  // 创建报名数据
  createLaborSignup(data) {
    return request('/createLaborSignup', 'POST', data)
  },

  // 根据身份证信息获取报名数据
  getLaborSignupByIdCard(data) {
    return request('/getLaborSignupByOpenId', 'POST', data)
  },
  // 根据身份证信息获取报名数据
  getChangeLaborSignMessage(data) {
    return request('/getChangeLaborSignMessage', 'POST', data)
  },
  
}

// 考勤相关 API
export const attendanceApi = {
  // 查询我的考勤
  getMyAttendanceList(data) {
    return request('/getMyAttendanceList', 'POST', data)
  }
}

// 薪资相关 API
export const salaryApi = {
  // 查询我的薪资
  getMyWagesList(data) {
    return request('/getMyWagesList', 'POST', data)
  },
  
  // 查询薪资明细
  getSalaryDetail(id) {
    return request(`/getMyWagesDetail/${id}`, 'GET')
  },
  
  // 确认薪资
  confirmMyWages(data) {
    return request('/confirmMyWages', 'POST', data)
  }
}

// 用户相关 API
export const userApi = {
  // 根据code获取openId
  getOpenId(code) {
    return request('/getOpenId', 'POST', { code })
  },

  // 根据openId获取用户信息
  getUserInfo(openId) {
    return request(`/getUserInfo`, 'POST', {openId: openId})
  },

  // 创建用户实名信息
  createAppUser(data) {
    return request('/createAppUser', 'POST', data)
  },

  // 更新用户简历信息
  updateAppUser(id, data) {
    return request(`/updateAppUser/${id}`, 'PUT', data)
  },

  // 解除实名信息
  deleteAppUser(id) {
    return request(`/deleteAppUser/${id}`, 'DELETE')
  },

  // 关注或者取关
  follow(data) {
    return request('/follow', 'POST', data)
  },

  // 根据openId获取收藏列表
  getFollowList(data) {
    return request('/getFollowList', 'POST', data)
  },
  // 获取入职资料信息
  getOnboardingData(data) {
    return request('/getEntryMessage', 'POST', data)
  },
  // 提交入职资料信息
  updateOnboardingData(data){
  	return request('/updateAppUser', 'POST', data) 
  },
  // 获取订阅模板信息
  getSubscribeTemplate(){
  	return request('/getSubscribeTemplate', 'GET') 
  }
}

// 验证相关 API
export const verifyApi = {
  // 解析身份证信息
  ocrIdCard(type, filePath) {
    return new Promise((resolve, reject) => {
      uni.uploadFile({
        url: API_BASE_URL + `/ocrIdCard/${type}`,
        filePath: filePath,
        name: 'file',
        success: (res) => {
          try {
            const data = JSON.parse(res.data)
            resolve(data)
          } catch (error) {
            reject(new Error('响应数据解析失败'))
          }
        },
        fail: (error) => {
          reject(error)
        }
      })
    })
  },

  // 发送验证码
    sendVerifyCode(phone, type) {
      // 根据接口文档：发送验证码走 /ocrIdCard/{type}
      return request(`/getPhoneCode`, 'POST', { phone, type })
  },

  // 验证验证码
  verifyCode(phone, code) {
    return request('/verifyCode', 'POST', { phone, code })
  }
}

// 系统相关 API
export const systemApi = {
  // 根据数据字典类型获取数据字典
  getListByTypeDataCode(typeCode) {
    return request(`/getListByTypeDataCode/${typeCode}`, 'GET')
  },

  // 获取所有省市列表
  getAllProByMapList(type = 2) {
    return request(`/getAllProByMapList/${type}`, 'GET')
  },
  // 订阅相关接口
// 保存用户授权订阅模板信息
    saveSubscribeTemplate(data){
      return request('/saveSubscribeTemplate', 'POST',data)
  }
} 

// 借支相关 API
export const borrowApi = {
  // 获取我的借支列表
  getMyBorrowList(data) {
    return request('/getMyBorrowList', 'POST', data)
  },

  // 创建我的借支
  createBorrow(data) {
    return request('/createBorrow', 'POST', data)
  },

  // 修改我的借支
  updateBorrow(data) {
    return request('/updateBorrow', 'POST', data)
  },

  // 查看借支详情
  getBorrowDetail(id) {
    return request(`/getBorrowDetail/${id}`, 'GET')
  },

  // 查询借款类项目信息
  getLoadLists(data) {
    return request('/getLoadLists', 'POST', data)
  },

  // 提交借款
  batchSubmit(data) {
    return request('/batchSubmit', 'POST', data)
  },

  // 删除借款
  batchRemove(data) {
    return request('/batchRemove', 'DELETE', data)
  }
}

// 离职相关 API
export const resignApi = {
  // 获取我的离职列表
  getMyResignList(data) {
    return request('/getMyResignList', 'POST', data)
  },

  // 查询我的离职明细
  getMyResignDetail(id) {
    return request(`/getMyResignDetail/${id}`, 'GET')
  },

  // 创建离职申请
  createResign(data) {
    return request('/createResign', 'POST', data)
  },

  // 修改离职申请
  updateResign(data) {
    return request('/updateResign', 'POST', data)
  },

  // 提交离职申请
  submitResign(data) {
    return request('/submitResign', 'POST', data)
  },

  // 删除离职
  deleteResign(data) {
    return request('/deleteResign', 'DELETE', data)
  }
}

// 请假申请相关 API
export const leaveApi = {
  // 获取我的请假申请列表
  getLeaveList(data) {
    return request('/getMyLeaveList', 'POST', data)
  },

  // 创建请假申请
  createLeave(data) {
    return request('/createLeave', 'POST', data)
  },

  // 修改请假申请
  updateLeave(data) {
    return request('/updateLeave', 'POST', data)
  },

  // 查看请假申请详情
  getLeaveDetail(id) {
    return request(`/getMyLeaveDetail/${id}`, 'GET')
  },

  // 提交请假申请
  batchSubmit(data) {
    return request('/batchSubmitLeave', 'POST', data)
  },

  // 销假
  batchCancel(data) {
    return request('/batchCancel', 'POST', data)
  },

  // 删除请假申请
  batchRemoveLeave(data) {
    return request('/batchRemoveLeave', 'DELETE', data)
  },

  // 获取请假类型列表
  getLeaveTypeList() {
    return request('/getListByTypeDataCode/leaveType', 'GET')
  }
}

// 上传相关 API
export const uploadApi = {
  // 上传头像
  uploadAvatar(openId, filePath) {
    return new Promise((resolve, reject) => {
      uni.uploadFile({
        url: API_BASE_URL + `/upLoadFile/${openId}`,
        filePath: filePath,
        name: 'file',
        success: (res) => {
          try {
            const data = JSON.parse(res.data)
            resolve(data)
          } catch (error) {
            reject(new Error('响应数据解析失败'))
          }
        },
        fail: (error) => {
          reject(error)
        }
      })
    })
  },

  // 上传附件
  uploadFile(filePath) {
    return new Promise((resolve, reject) => {
      uni.uploadFile({
        url: API_BASE_URL + '/upLoadFile',
        filePath: filePath,
        name: 'file',
        success: (res) => {
          try {
            const data = JSON.parse(res.data)
            resolve(data)
          } catch (error) {
            reject(new Error('响应数据解析失败'))
          }
        },
        fail: (error) => {
          reject(error)
        }
      })
    })
  }
} 